// 订单模型
const { Orders } = require('../../../models/order');
// 用户模型
const { User } = require('../../../models/user');
// 店铺模型
const { Store } = require('../../../models/store');
// 商品模型
const { Goods } = require('../../../models/good');
// 统一数据返回类
const { DataReturn } = require('../../../common/returnclass');

/**
 * @api {Get} /orders 查询订单
 * @apiGroup Admin-Orders
 *
 * @apiParam {ObjectId} _id 商家id
 * @apiParam {String} [query] 搜索字段：订单编号(非必填)
 * @apiParam {Number} pagenum 数量
 * @apiParam {Number} pagesize 页数
 *
 * @apiSuccess {ObjectId} id 订单id
 * @apiSuccess {String} contact  联系人
 * @apiSuccess {Boolean} is_evaluate  是否评价
 * @apiSuccess {Array} estimate  评价
 * @apiSuccess {Boolean} is_pay  是否支付
 * @apiSuccess {Boolean} is_send  是否发货
 * @apiSuccess {String} order_belong  订单所属用户
 * @apiSuccess {String} mobile  联系方式
 * @apiSuccess {String} order_goods  订单所属商品
 * @apiSuccess {String} order_number  订单编号
 * @apiSuccess {String} order_price  订单价格
 * @apiSuccess {String} order_store  订单所属店铺
 * @apiSuccess {String} order_time  订单时间
 * @apiSuccess {String} orders  订单商品
 * @apiSuccess {Array} receiving_address  收货地址
 * @apiSuccess {String} remark  备注
 * @apiSuccess {Array} send_address  发货地址
 * @apiSuccess {Boolean} state  订单状态 0 待付款，1 待发货 2 待收货 3 待评价 4已评价
 */
module.exports = async (req, res) => {
	// 商家用户id
	let { query, pagenum, pagesize, _id } = req.query;
	pagenum = parseInt(pagenum);
	pagesize = parseInt(pagesize);
	console.log(req.query, pagesize*(pagenum-1));
	
	let orders=[];
	let store_id = '';
	let goods_ids;
	let user = await User.findOne({ _id });
	if (user.role =='business') { // 商家用户查询
		
		if (query) {
			// 根据商家id查询店铺id，然后根据店铺id查询商品id，最后根据商品id查询订单
			orders = await Orders.find({ order_store: store_id ,order_number: { $regex: query,$options:"$i" }}).skip(pagesize*(pagenum-1)).limit(pagesize);
			if (!orders) return DataReturn.getData(res, 200, [], '暂无数据');
			// 响应
			DataReturn.getData(res, 200, { data:orders, total: await Orders.find({ order_store: store_id, order_number: { $regex: query,$options:"$i" }}).countDocuments() }, '获取订单列表成功')
		} else {
			// 查询所有订单信息
			store_id = await Store.findOne({store_belong: _id}).select('_id');

			orders = await Orders.find({ order_store: store_id }).skip(pagesize*(pagenum-1)).limit(pagesize);
			if (!orders) return DataReturn.getData(res, 200, [], '暂无数据');
			// 响应
			DataReturn.getData(res, 200, { data:orders, total: await Orders.find({ order_store: store_id }).countDocuments() }, '获取订单列表成功')
		}
		
	} else if (user.role =='admin') { // 管理员查询
	
		if (query) {
			// 根据用户名模糊查询
			orders = await Orders.find({order_number: { $regex: query,$options:"$i" }}).skip(pagesize*(pagenum-1)).limit(pagesize);
			if (!orders) return DataReturn.getData(res, 200, [], '暂无数据');
			// 响应
			DataReturn.getData(res, 200, { data:orders, total: await Orders.find({order_number: { $regex: query,$options:"$i" }}).countDocuments() }, '获取订单列表成功')
		} else {
			// 查询所有订单信息
			orders = await Orders.find().skip(pagesize*(pagenum-1)).limit(pagesize);
			if (!orders) return DataReturn.getData(res, 200, [], '暂无数据');
			// 响应
			DataReturn.getData(res, 200, { data:orders, total: await Orders.find().countDocuments() }, '获取订单列表成功')
		}
		
	} else if (user.role =='normal') {
		
	}
	
}
